将Android Studio Template的开发过程集成于Android Studio Plugin中,只需要一键就能将当前文件制作为Template。
Android Studio的模板包括以下三种,这里讲的是第三种Multi Template。在阅读本文之前,默认你是了解该模板的,知道为什么要使用它,如果不清楚它是什么,可以在网上查阅相关资料,当然也可以直接点击这里查看一下同行们对它的评价
- Live Template:代码片段级别
- File Template:单文件级别
- Multi Template:多个文件级别(以下称
Android Studio Template
)
WHAT
TemplateBuilder
是一款能够帮助我们快速生成Android Studio Template
的AS插件,将通过逐个文件去配置模板的方式改进为通过插件来实现,对于简单的模板制作,只需要一键即可生成。
HOW
安装
打开Android Studio,Preferences
– Plugins
– Brown Repositories
, 搜索TemplateBuilder
并下载,下载之后重启IDE即可使用。
使用
动态图展示
先直接贴上Gif的演示效果,分别对应模板的导出与导入
导出:
选择待导出的文件或文件夹,按下ALT + T
,在弹出界面中更改模板名称(MVP Test
)和描述后直接Finish
,然后重启IDE;
导入:
选择一个包,按下Command + N
键,输入模板分类名(默认为电脑用户名),选择MVP Test
模板进行导入。
快速制作
这里我们拿对一个MVP模板的抽取来举例,首先选中需要制作为模板的类文件(如果需要选中某个文件夹里的全部文件,可以直接选中该文件夹),然后按下启动改插件的快捷键ALT + T
,便能看到如下界面
下面来说明一下该界面对应的内容
Template Category
对应模板的分类,对应选择导入模板时的模板分类,这里默认值是电脑的用户名。Template Name
对应模板名称,对应选择导入模板时的模板名称,默认值是当前的Project名称。Template Description
对应模板描述信息,对应导入模板时弹出的导入界面的文字描述,默认为空。Template Folder
对应生成模板所存放的位置,如果是Mac操作系统则默认为/Applications/Android Studio.app/Contents/plugins/android/lib/templates
, Windows系统的话由于差异比较大,就默认为空了,可以自行配置[Android Studio安装目录]/plugins/android/lib/templates
(这里只需要配置一次即可,插件将自动保存该位置)。Input data区域
(见下:配置模板变量)
如果你只是想简单抽取你写的这个模板,你只需要输入下Template Name
和Template Description
即可,当然如果你不想输入的话这也可以省略掉。接下来直接点击Finish
,就能在IDE底部看到弹出如下图所示的提示,此时你已经制作成功,重启IDE即可使用该模板。
到这里,如果你了解Android Studio Template
制作流程的话,你可能觉得相对于完全自己手动去做这样固然简单,但是灵活性上降低了不少。例如模板中有组价依赖关系的时候,你需要在build.gradle.ftl
中去添加对应的依赖;导入模板之后你想自动打开某个文件时,你需要编辑recipe.xml.ftl
;选择模板适用于哪个版本时,你需要编辑template.xml
等等。如果你有这方面的需求,可以点击Next
来代替Finish
,点击之后你就能看到如下界面,在这里提供了所有你需要关注的配置文件的编辑,编辑完成直接点击OK
开始自动生成。
配置模板变量
在上面的界面中可以看到Input data
区域,它对应着导入模板时的变量输入,如果你想增强模板的可配性将会用到它,它就对应着AS模板中template.xml
的<parameter />
标签,也就是下面的每一个配置项。
关于Input data
的使用,先解释下每个属性对应的含义
id
变量名,必须和模板中使用的变量名对应,必填name
变量简介,必填type
变量类型,string和boolean两种,通过下拉框选择,必填default
变量对应的默认值,选填help
添加该变量时的提示信息,选填
下面我举个例子,假设待导出的模板文件是UserActivity
类,代码如下:
1 | public class UserActivity extends Activity { |
代码很简单,假设我们想让引入模板时mUserName
属性名是可配的,并且在Activity中是否调用setContentView方法也是可配的,那我们就需要这样改写该类:
1 | public class UserActivity extends Activity { |
我们用到了textViewName
和setContentView
两个变量,所以当我们按下ALT + T
时就要在对应的Input data区域点击Add
来添加两个对应的变量。
Input data |
textViewName |
setContentView |
---|---|---|
id |
textViewName | setContentView |
type |
string | boolean |
name |
TextView属性名 | 是否设置布局 |
default |
mUserName | false |
help |
输入TextView对应的属性名 | 勾选则设置布局文件,反之不设置 |
添加完模板变量后导出,重启IDE选择导入该模板,此时便能看到刚才配置的两个变量,你可以输入不同的值来验证模板的正确性。
添加模板依赖
模板中需要添加gradle依赖时,点击Next
在第二个页面中build.gradle.ftl
添加如下所示对应的仓库和依赖即可。
1 | repositories { |
WHY
如果你尝试过自己去制作一个Android Studio Template
的话,相信你一定会为模板配置、更改文件名、添加可配参数等等繁琐的操作而烦恼,因为哪怕一个很简单的模板抽取都需要把这一系列流程全都走一遍,更改好几个配置文件。
说下我的个人感受,当我发现Android Studio Template
时我顿时感觉有太多太多可以抽取出来的模板以供日后快速使用,但当我刚开始抽取几个模板的时候就已经被深深的恶心到了,因为这个过程真心很繁琐。记得当时还专门写groovy脚本来辅助进行这些模板的配置,但也还是需要向脚本里添加一些模板文件的入参信息,依然很麻烦。后来我决定将这个制作过程尽可能通过自动化来完成,当时考虑Gradle插件
、Java GUI
、AS Plugin
等多种方式来完成模板制作,最终选择了快而方便的AS Plugin
,插件的名称就是上面所提到的TemplateBuilder
。